package cn.zyq.charging.user.controller;

import cn.zyq.charging.common.pojo.JsonResult;
import cn.zyq.charging.common.pojo.vo.UserInfoVO;
import cn.zyq.charging.user.pojo.dto.ChargingUserInfoDTO;
import cn.zyq.charging.user.pojo.vo.ChargingUserInfoVO;
import cn.zyq.charging.user.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;

/**
 * 用户接口
 * @author yonqing.zhao
 */
@Slf4j
@Api(tags = "用户接口")
@RestController//这个注解属于springmvc注解springboot-starter-web
@RequestMapping("/user")//这个注解属于springmvc注解springboot-starter-web
public class UserController {


    /**
     * 通过用户id获取车辆信息<目前主要根据用户id获取用户绑定的车辆信息>
     * @param userId
     * @return JsonResult
     */
    @ApiOperation("获取用户信息")
    @GetMapping("/info/{userId}")
    public JsonResult getUserInfo(@PathVariable("userId")  Integer userId){
        //@PathVariable是来自于spring框架的Restful风格传递参数时需要用此注解获取参数
        log.debug("获取用户信息-{}",userId);
        UserInfoVO userInfoVO=new UserInfoVO();
        userInfoVO.setCarId(11);
        JsonResult jsonResult=new JsonResult();
        jsonResult.setData(userInfoVO);
        jsonResult.setCode(2000);
        return jsonResult;
    }



    @Autowired
    UserService userService;
    /**
     * 通过用户id获取用户余额
     * @param userId 用户id
     * @return JsonResult
     */
    @ApiOperation("获取用户余额")
    @GetMapping("/balance/{userId}")
    public JsonResult getUserBalance(@PathVariable("userId")  Integer userId){
        //@PathVariable是来自于spring框架的Restful风格传递参数时需要用此注解获取参数
        log.debug("获取用户{}余额",userId);
        //todo 通过用户id去用户余额表查询用户余额 charging_user_info
        /*ChargingUserInfoDTO chargingUserInfoDTO=userService.getUserBalance(userId);
        log.debug("用户{}余额为{}",userId,chargingUserInfoDTO.getBalance());
        BigDecimal balance=chargingUserInfoDTO.getBalance();*/

        BigDecimal balance=new BigDecimal(10000);
        return JsonResult.ok(balance);//这一行代码和下边三行代码作用相同(因为ok方法中给jsonResult设置了状态码200，设置了data为balance)

        /*JsonResult<BigDecimal> jsonResult = new JsonResult<BigDecimal>();
        jsonResult.setData(balance);
        jsonResult.setCode(2000);
        return jsonResult;*/
    }

}


